<?php

/**
 * DatacenterController
 * 
 * @package Sgit 
 * @author Juan Manuel Martinez Carrillo
 * @copyright Juan Manuel Martinez Carrillo
 * @version 2012
 * @access public
 */

class DiarioIncidenciasController extends Sgit_Controller_Action
{

    protected $_main_model = 'Incidencias';
    protected $_main_form = 'Incidencias';
    protected $_checkZona = true;

    function _begin()
    {
        $this->_file_upload[1] = Sgit_Util_FileUpload::run('incidencias', 'file');
        $this->_element->IncidenciasDetectada = new Sgit_Form_Element_Select_Xml('IncidenciasDetectada');
        $this->_element->IncidenciasOrigen = new Sgit_Form_Element_Select_Xml('IncidenciasOrigen');
        $this->_element->Incidencias = new Sgit_Form_Element_Select_Xml('Incidencias');
        $this->_element->IncidenciasNivel = new Sgit_Form_Element_Select_Xml('IncidenciasNivel');
        $this->_element->IncidenciasImpacto = new Sgit_Form_Element_Select_Xml('IncidenciasImpacto');
        $this->_element->IncidenciasImpactoCliente = new Sgit_Form_Element_Select_Xml('IncidenciasImpactoCliente');
        $this->_element->IncidenciasResolucion = new Sgit_Form_Element_Select_Xml('IncidenciasResolucion');
    }

    public function indexAction()
    {


        if (!$this->_hasParam('fecha'))
        {
            $f = date('d/m/Y', strtotime('-1 year')) . ' - ' . date('d/m/Y');
            $this->setParam('fecha', $f);
        }

        $filtros = new Sgit_Form_Filtros();

        $f_fecha = new Zend_Form_Element_Text('fecha');
        $f_fecha->setLabel('Fecha Incidencia');


        //$filtros->addFormSelect($dc);
        $filtros->addFormSelect($this->_element->IncidenciasDetectada);
        $filtros->addFormSelect($this->_element->IncidenciasOrigen);
        $filtros->addFormSelect($this->_element->IncidenciasNivel);
        $filtros->addFormSelect($this->_element->Incidencias);
        $filtros->addFormSelect($this->_element->IncidenciasImpacto);
        $filtros->addFormSelect($this->_element->IncidenciasImpactoCliente);
        $filtros->addFormSelect($this->_element->IncidenciasResolucion);

        $filtros->addFormSelect($f_fecha);

        $values = $this->_getFiltrosValues($filtros);

        $filtros->myRender();

        $values['id_zona'] = $this->_idZona;
        $rows = $this->_model->default->getIncidencias($values);
        $this->view->rows = $this->_prepareRowsToTr($rows);



    }

    public function editarAction()
    {
        $this->_editar();
    }


    public function insertarAction()
    {
        $this->_insertar();
    }


    public function borrarAction()
    {
        $this->_remove();
    }


    protected function _prepareValuesToTr($row)
    {


        if (null === $this->proy)
        {
            $proyectos = new Application_Model_Proyectos();
            $this->proy = $proyectos->getAssoc('id', 'nombre', array('id_zona=?' => $this->_idZona));
        }

        $row['text_detectada'] = $this->_element->IncidenciasDetectada->getMultiOption($row['detectada']);
        $row['text_origen'] = $this->_element->IncidenciasOrigen->getMultiOption($row['origen']);
        $row['text_nivel'] = $this->_element->IncidenciasNivel->getMultiOption($row['nivel']);
        $row['text_incidencia'] = $this->_element->Incidencias->getMultiOption($row['incidencia']);
        $row['text_impacto'] = $this->_element->IncidenciasImpacto->getMultiOption($row['impacto']);
        $row['text_impacto_cliente'] = $this->_element->IncidenciasImpactoCliente->getMultiOption($row['impacto_cliente']);
        $row['text_resolucion'] = $this->_element->IncidenciasResolucion->getMultiOption($row['resolucion']);

        $proyectos = unserialize($row['proyectos']);
        unset($row['proyectos']);
        
        foreach ($proyectos as $id_proyecto)
        {
            $row['proyectos_con_sla'][] = $this->proy[$id_proyecto];
        }
        $proyectos = unserialize($row['proyectos_sin_sla']);
        unset($row['proyectos_sin_sla']);
        foreach ($proyectos as $id_proyecto)
        {
            $row['proyectos_sin_sla'][] = $this->proy[$id_proyecto];
        }


        return $row;

    }


    protected function _prepareValuesToForm($row)
    {
        if ($row)
        {
            $row['proyectos'] = unserialize($row['proyectos']);
            $row['proyectos_sin_sla'] = unserialize($row['proyectos_sin_sla']);
        }

        $row['fecha_incidencia'] = Sgit_Filter_DateDbToLocalize::filter($row['fecha_incidencia'], 'dd-MM-yyyy HH:mm:ss');
        $row['fecha_resolucion'] = Sgit_Filter_DateDbToLocalize::filter($row['fecha_resolucion'], 'dd-MM-yyyy HH:mm:ss');


        return $row;
    }

    protected function _prepareValuesToDb()
    {
        $row = $this->_form->getValues();
        if ($row['proyectos'])
            $row['proyectos'] = serialize($row['proyectos']);
        if ($row['proyectos_sin_sla'])
            $row['proyectos_sin_sla'] = serialize($row['proyectos_sin_sla']);

        $row['id_zona'] = $this->_idZona;

        $row['fecha_incidencia'] = Sgit_Filter_DateToDb::filter($row['fecha_incidencia'], '', true);
        $row['fecha_resolucion'] = Sgit_Filter_DateToDb::filter($row['fecha_resolucion'], '', true);

        Sgit_Util_removeFiles::run($this->_file_upload[1]['tabla'], $this->_file_upload[1]['key'], $this->_id, $row[$this->_file_upload[1]['activo']]);
        unset($row[$this->_file_upload[1]['name']]);
        unset($row[$this->_file_upload[1]['activo']]);

        return $row;
    }




    /**
     * DiarioIncidenciasController::_afterAdd()
     * Para notificar via mail
     * @return void
     */
    public function _afterAdd()
    {


        $directores=Sgit_Util_UserByGroup::run(91);
        $facilities=Sgit_Util_Facility::run($this->_idZona);
        
        $notificar=array_merge((array)$directores,(array)$facilities);
        

        $row = $this->_model->default->GetRow($this->_id); 
        $row = $this->_prepareValuesToTr($row);



        $server=$this->getRequest()->getServer('SERVER_NAME');
         
        foreach($row['proyectos_con_sla'] as $v)
        {
            $proyectos_con_sla.='<li>'.$v.'</li>';
        }
        foreach($row['proyectos_sin_sla'] as $v)
        {
            $proyectos_sin_sla.='<li>'.$v.'</li>';
        }

        $f=Sgit_Filter_DateDbToLocalize::filter($row['fecha_incidencia'],'EEEE, dd MMMM yyyy HH:mm');
        
        
        $body = '<h1>Incidencia '.$f.' '.$row['text_incidencia'].'</h1>
        
        <b>Fecha Incidencia: </b>   '.$f.'<br>
        <b>Datacenter:</b>  '.Sgit_Cache::single()->model('Datacenter')->getKey($row['id_zona']).'<br>
        <b>Detectada en primer lugar por:  </b>'.$row['text_detectada'].'<br>
        <b>Instalación origen de la incidencia:</b>  '.$row['text_origen'].'<br>
        <b>Nivel de incidencia: </b>   '.$row['text_nivel'].'<br>
        <b>Incidencia: </b>   '.$row['text_incidencia'].'<br>
        <b>Nivel de impacto: </b>   '.$row['text_impacto'].'<br>
        <b>Impacto en clientes: </b>   '.$row['text_impacto_cliente'].'<br>
        <b>Grado de resolución: </b>   '.$row['text_resolucion'].'<br>
        <b>Proyectos Afectados con SLA: </b>   <ul>'.$proyectos_con_sla.'</ul><br>
        <b>Proyectos Afectados sin SLA: </b>   <ul>'.$proyectos_sin_sla.'</ul><br>
        <b>Fecha Resolución: </b>   '.Sgit_Filter_DateDbToLocalize::filter($row['fecha_resolucion'],'EEEE, dd MMMM yyyy HH:mm').'<br>
        <b>Comentarios: </b>   <br>'.$row['notas'];

 

        $mail=new Sgit_Mail();
        $entrada['de']=$this->_auth->getIdentity()->id;
        $entrada['destinatarios']=$notificar;
        $entrada['asunto']='Incidencia: '.$f.' '.$row['text_incidencia'];
        $entrada['body']=$body;
        $entrada['ira']="http://$server/diario-incidencias/index/idZona/".$row['id_zona'];
        $entrada['id_zona']=$row['id_zona'];
        $entrada['adjuntos'] = Sgit_Util_getFiles::run('incidencias','file', $this->_id,true);

        $mail->sendMsg($entrada);



    }




}
